hexo博客主题Yelee迁移笔记

References:

  MOxFIVE 自定义的 Yelee 这个主题真的很好用,迁移之后我的几个体会是:
   a). 动态效果很酷炫,整个界面给人的感觉就很满意
   b). 添加多说评论栏是如此的简单
   c). 自带的站点、页面访问量统计,很不错
   d). 整个源码的框架似乎更合理了,你可以自己浏览一下源码,感同身受吧?

  下面是本人将自己的博客主题迁移到 Yelee 的过程以及其中做的一些自定义适配。

How to install? easy!

  Follow MOxFIVEYelee Github 主页 即可。

1
2
3
4
5
# Installation
git clone https://github.com/MOxFIVE/hexo-theme-yelee.git themes/yelee

# Change theme field in Hexo root's _config.yml file.
theme: yelee

自定义头像

  站点左上角的头像取自 yelee/source/img/avatar.png,其配置项在主题对应的 _config.yml 配置文件中的 Basic Setup 部分。两种方式,将原先的 avatar.png 做个备份,然后将自定义的头像存放到 yelee/source/img/ 下,并命名为 avatar.png;修改配置文件中的 avatar: 项,自定义图片路径和名称,个人建议图片最好还是存放到 yelee/source/img/ 下。

1
2
# Link to your avatar | 填写头像地址 <theme-name>/source/img
avatar: /img/avatar.png

自定义站点小图标

  网址前面的图标,跟自定义头像相似。

1
2
# Small icon of Your site | 站点小图标地址 <theme-name>/source/img
favicon: /img/favicon.ico

自定义菜单栏

自定义menu
 自定义站点侧边栏中间的菜单项

1
2
3
4
5
6
7
8
9
10
11
# >>> Basic Setup | 基础设置 <<<

# Header | 主菜单
## About Page: `hexo new page about`
## Tags Cloud Page: `hexo new page tags`
# Header
menu:
Home: /
All-lists: /archives
Contact: /Shengjie
About: /about

 

自定义subnav
 自定义菜单项下方的图标导航栏,这里是想添加 开源中国 的一个图标快捷方式,相关代码在 …/source/css/_partial/customise/social-icon.styl 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
img-logo = "新浪微博" #ecc260 80,
"知乎" #0078d8 90,
"豆瓣" #06c611 88,
# add "OSChina"
"OSChina" white 88,
V2EX #e4cdb4 78,
TiddlyWiki #6283dd 82,
"简书" #e99888 82,
SegmentFault #018f56 80,
"网易云音乐" #e51e02 80,
"虾米音乐" #ff6a00 82,
CSDN red 82,
"博客园" #217ed4 95,
Plunker black 90,
LOFTER #316061 75,
Coding white 88,
bilibili #f589a0 100,
AcFun #fbc054 90,
niconico white 70,
Quora #b92b27 103

for i in img-logo
.{i[0]}
background url(root-url + '/img/' + i[0] + '.png') center no-repeat i[1]
background-size i[2] + "%"
.GitHub
background url(//cdn.bootcss.com/logos/0.2.0/github-octocat.svg) no-repeat white
background-size 90%
background-position 50% 100%

  添加 “OSChina” white 88, 一项,从下面的语句我们也可以看出,”OSChina”、white、88 分别对应于 i[0]、i[1]、i[2],也就是图片名称、背景色、图片大小。所以需要将 OSChina 对应项的图片,即开源中国的Logo存放到 yelee/source/img/ 下,并命名为 OSChina.png
  可以看出,Github 是独立开来的。此外,通过 . 操作符我们可以看出,这些都是 css 中定义的 类选择器
  完成这些之后,你就可以在主题配置文件中启动该图标导航栏。

1
2
3
4
5
6
7
8
9
10
11
# Social info. Bar | 社交信息展示
## Keep "mailto:" in Email | 设置 Email 时保留 "mailto:"
## Encrypt email 加密邮件地址 http://ctrlq.org/encode/
## RSS requires a plugin to take effect | 使用 RSS 需先安装对应插件
## https://github.com/hexojs/hexo-generator-feed

subnav:
新浪微博: "http://weibo.com/u/2911566017?refer_flag=1001030201_"
GitHub: "https://github.com/Durant35"
# self-defined OSChina
OSChina: "https://my.oschina.net/love7zx/"

添加多说评论栏

  Yelee 添加多说评论栏是我遇到的自适配最简单的一个主题。此处默认你已经有多说账号了,没有的话,请到多说官网注册。添加多说评论栏只需要修改主题配置文件 Conments 评论系统 中的 duoshuo: 选项即可,<your-duoshuo-shortname> 既是多说后台管理的 id 名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# >>> Conments 评论系统 <<<
# Chose ONE as your comment system and keep others disable.
# 选一个作为网站评论系统,其他保持禁用。

preload_comment: true
## false: 当点击评论条等区域时再加载评论模块
## false: load comment's section until u click/hover on the bar/icon

show_count: true
## 是否在主页文章标题旁显示评论数(多说、Disqus)
## Add comment count after article title

disqus:
#on: true
shortname:
# https://help.disqus.com/customer/en/portal/articles/466208-what-s-a-shortname-
# It is unnecessary to enable disqus here if
# you have set "disqus_shortname" in your site's "_config.yml"

duoshuo:
on: true
domain: <your-duoshuo-shortname>
# 是否开启多说评论,http://duoshuo.com/create-site/
# 使用上面网址登陆你的多说,然后创建站点,在 domain 中填入你设定的域名前半部分
# http://<要填的部分>.duoshuo.com (domain只填上<>里的内容,不要填整个网址)

从繁体中文到简体中文

  默认应该是繁体中文,你可以在站点配置文件(不是主题配置文件!!)中设置,站点配置位于 hexo 根目录下。对应的 language: 选项位于 …/yelee/languages/ 下,都是一些 .yml 文件。

1
2
3
#language: zh-CN
# Specifical language for theme Yelee
language: zh-Hans

自带统计特性

站点访问量统计
页面访问量统计

自定义阅读全文按钮显示内容

  …/yelee/languages/<your-language>.yml…/yelee/languages/ 下是一些语言包对应的 .yml 文件

1
2
3
4
5
6
7
8
# zh-Hans: Chinese (Simplified) 大陆简体
index:
menu: 菜单
tags: 标签
friends: 友情链接
about: 关于我
more: more
copy: 复制

自定义分享栏

  默认主题中每篇文章下方都自带分享栏,包括常见的分享到微博、QQ等,相关代码位于 …/layout/_partial/post/share.ejs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="share">
<% if (theme.share.baidu) { %>
<div class="bdsharebuttonbox">
<!--
<a href="#" class="fa fa-twitter bds_twi" data-cmd="twi" title="分享到推特"></a>
-->
<a href="#" class="fa fa-weibo bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
<a href="#" class="fa fa-qq bds_sqq" data-cmd="sqq" title="分享给 QQ 好友"></a>
<a href="#" class="fa fa-weixin bds_weixin" data-cmd="weixin" title="生成文章二维码"></a>
<a href="#" class="fa fa-files-o bds_copy" data-cmd="copy" title="复制网址"></a>
<!--
<a href="#" class="fa fa fa-envelope-o bds_mail" data-cmd="mail" title="通过邮件分享"></a>
-->
<a href="#" class="fa fa-share-alt bds_more" data-cmd="more"></i></a>
</div>
...
</div>

自定义版权信息

References

  默认主题每篇文章末尾都会有版权信息,相关代码在 …/yelee/layout/_partial/post/nav.ejs
   a. 去除最末尾的许可协议说明
   b. 将文章作者信息与 .md 博文源文件关联

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="copyright">
<p><span><%= __('copyright_info.title') %>:</span><a href="<%- url_for(post.path) %>"><%= post.title %></a></p>

<!-- modify author information
<p><span><%= __('copyright_info.author') %>:...
-->
<p><span><%= __('copyright_info.author') %>:</span><%=post.author%></p>

<p><span><%= __('copyright_info.date') %>:</span><%= post.date.format("YYYY-MM-DD, HH:mm:ss") %></p>
<p><span><%= __('copyright_info.updated') %>:</span><%= post.updated.format("YYYY-MM-DD, HH:mm:ss") %></p>
<p>
<span>...
<script> var clipboard = new Clipboard('.copy-path'); </script>
</p>

<!-- not to show license information
<p>
<span>...
</p>
-->
</div>

  post.author 指代每篇 .md 文章开头的参数声明。

1
2
3
4
5
6
7
8
title: hexo博客主题Yelee迁移笔记
date: 2016-09-16 14:54:28
categories:
- 技术留档
- Hexo
tags: Hexo
author: <author-name>
---

分类&标签

References

 效果: http://durant35.github.io/tags
  1. 使用 Hexo 命令新建一个名为 tags 的页面

1
hexo new page tags

  2. 修改该页面 /source/tags/index.md

1
2
3
title: 分类&标签
date: 2016-09-17 15:43:55
---

  3. 分类&标签页面相关的代码有 …/yelee/layout/_partial/page.ejs,通过 partial() 函数引入 …/yelee/layout/_partial/tag-cloud-page.ejs

1
2
3
4
5
6
...
<!-- 匹配页面 -->
<% if (page.path === "tags/index.html"){ %>
<!-- Tag Cloud Page -->
<%- partial('tag-cloud-page') %>
<% } %>

   tag-cloud-page.ejs 代码如下,主要改变是根据需求调整分类的层数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<hr>
<br>
<!-- 显示分类 -->
<%- list_categories({depth: 0}) %>

<p class="count"></p>
<!-- 显示标签 -->
<div class="tags">
<%- tagcloud({
min_font: 16,
max_font: 35,
amount: 999,
color: true,
start_color: 'gray',
end_color: 'black',
}) %>
</div>
<style>
.category-list li{
display: inline-block;
margin: 0 1em .5em 0;
padding: 4px;
border: 1px solid lightgray;
font-size: 1.2rem;
}
.category-list a { color: gray; }
.category-list-item:hover a {
color: gray;
text-decoration: none;
}
.category-list-count {
margin-left: 2px;
font-size: .9rem;
}
.article-entry ul li:before{ display: none; }
.article-inner { text-align: center; }
.tags {
max-width: 42em;
margin: 2em auto;
margin-top: 0em;
}
.tags a {
margin-right: 1em;
line-height: 65px;
border-bottom: 1px solid gray;
white-space: nowrap;
transition: border-bottom .5s;
}
.tags a:hover {
border-bottom: 3px dotted gray;
text-decoration: none;
}
#count > span {
margin: auto .2em;
font-weight: bold;
}
</style>

<!-- Count tags and categories -->
<p id="count">
...
</p>
<script>
$('#count').appendTo('.count');
</script>

  list_categories()tagcloud() 均为 hexo 的 API,可以参考这里 API|hexo

文章目录
  1. 1. How to install? easy!
  2. 2. 自定义头像
  3. 3. 自定义站点小图标
  4. 4. 自定义菜单栏
  5. 5. 添加多说评论栏
  6. 6. 从繁体中文到简体中文
  7. 7. 自带统计特性
  8. 8. 自定义阅读全文按钮显示内容
  9. 9. 自定义分享栏
  10. 10. 自定义版权信息
  11. 11. 分类&标签